package sohsite.pelada.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sohsite.excecao.EntradaInexistenteException;
import sohsite.excecao.MensagensJSP;
import sohsite.fachada.SistemaSohSite;
import sohsite.pelada.pelada.Pelada;
import sohsite.usuario.Usuario;

public class ServletAtualizarPelada extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doPost (HttpServletRequest req,
			HttpServletResponse res)
	throws ServletException, IOException
	{
		SistemaSohSite sohSite = SistemaSohSite.getInstancia();

		int idPelada = -1;
		try{
			idPelada = Integer.parseInt(req.getParameter("idPelada"));
		}catch(NumberFormatException e){
			res.sendRedirect("./jsp/mensagem.jsp"+ "?idMensagem=" + MensagensJSP.PeladaInexistente);
			return;
		}

		
		String url = req.getParameter("url");
		
		String nome = req.getParameter("nome")==null?"":req.getParameter("nome");
		String mod1 = req.getParameter("mod1")==null?"":req.getParameter("mod1");
		String mod2 = req.getParameter("mod2")==null?"":req.getParameter("mod2");
		String mod3 = req.getParameter("mod3")==null?"":req.getParameter("mod3");
		
		if ((mod1.equals("") && mod2.equals("") && mod3.equals("")) || nome.equals("")){
			res.sendRedirect("./jsp/mensagem.jsp"+ "?idMensagem=" + MensagensJSP.CampoInvalido);
			return;
		}

		Pelada pelada = null;
		try {
			pelada = sohSite.getControladorPelada().consultarPelada(idPelada);
		} catch (EntradaInexistenteException e) {
			res.sendRedirect("./jsp/mensagem.jsp"+ "?idMensagem=" + MensagensJSP.PeladaInexistente);
			return;
		}

		pelada.setNome(nome);
		Collection<Usuario> moderadores = pelada.getUsuarios();
		Collection<Usuario> moderadoresNovos = new ArrayList<Usuario>();

		try {
			if(mod1!=null && !mod1.equals("")){
				Usuario usuario = sohSite.getControladorUsuario().consultarUsuario(Integer.parseInt(mod1));
				if(usuario.getPeladas()==null)
					usuario.setPeladas(new HashSet<Pelada>());
				usuario.getPeladas().add(pelada);
				sohSite.getControladorUsuario().atualizarUsuario(usuario);
				moderadoresNovos.add(usuario);
			}
			if(mod2!=null && !mod2.equals("")){
				Usuario usuario = sohSite.getControladorUsuario().consultarUsuario(Integer.parseInt(mod2));
				if(usuario.getPeladas()==null)
					usuario.setPeladas(new HashSet<Pelada>());
				usuario.getPeladas().add(pelada);
				sohSite.getControladorUsuario().atualizarUsuario(usuario);
				moderadoresNovos.add(usuario);
			}
			if(mod3!=null && !mod3.equals("")){
				Usuario usuario = sohSite.getControladorUsuario().consultarUsuario(Integer.parseInt(mod3));
				if(usuario.getPeladas()==null)
					usuario.setPeladas(new HashSet<Pelada>());
				usuario.getPeladas().add(pelada);
				sohSite.getControladorUsuario().atualizarUsuario(usuario);
				moderadoresNovos.add(usuario);
			}

		}catch (EntradaInexistenteException e) {
			res.sendRedirect("./jsp/mensagem.jsp"+ "?idMensagem=" + MensagensJSP.UsuarioInexistente);
			return;
		}
		moderadores.addAll(moderadoresNovos);
		moderadores.retainAll(moderadoresNovos);
		
		pelada.setUsuarios(moderadores);
		sohSite.getControladorPelada().atualizarPelada(pelada);
		
		res.sendRedirect(url + "?idPelada=" + idPelada );


	}
}